package UserInterface;

import java.io.IOException;

import BussinesLogic.Calculadora;
import BussinesLogic.ICalculadora;


//Para generar Documentacion

/**
 * Clase CalculadoraUI: Ejemplo Simple Ejercicio Uno Introduccion a Java.
 */

public class CalculadoraUI {
	/**
	 *  Se debe de limpiar las operaciones que tiene logica del negocio en este caso las 
     *	operaciones aritmeticas.
     * Delegando estas a los objetos del negocio, en este caso las instacias de calculadora,
     * la cual va a ser nuestra clase de negocio.
     * Creamos una instancia de nuestro objeto de negocio, 
     */
	 private static ICalculadora cal;
	 	
	/**
	 * @param args : No Solicita ningun parametro de entrada.
	 * @throws IOException 
	 */
	//Java nos exige manejar los errores por entrada y Salida (I/O)
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
       
		
		//Se va a mostrar un texto en pantalla 
		System.out.println("*************************");
		System.out.println("Calculadora Basica");
		System.out.println("Ingrese el Primer Numero:");
		System.out.println("Presione la Tecla Enter una vez haya Ingresado el Numero");
		
		//Declaramos la Variable str tipo Sring para en ella
		//almacenar el valor ingresado por el usuario
		String str = "";
		
		//Declaramas la Variable char c, ya que la consola lee Caracter a Caracter
		char c;
		
		//Vamos a leer la consola hasta que encuentre la tecla Enter("/n")
		while ((c=(char)System.in.read())!='\n')
		{
			//El caracter (c) es convertido a String y concatenado
			str = str + String.valueOf(c);
		}
		//Ahora necesitamos convertir ese valor a Tipo Entero
		//para ello no solo lo convertimos sino que debemos quitarle
		// los espacios que tenga en blanco
		int n1 = Integer.valueOf(str.trim());
		
		//ya tenemos el primer numero, ahora vamos por el segundo
		System.out.println("Ingrese el Segundo Numero:");
		System.out.println("Presione la Tecla Enter una vez haya Ingresado el Numero");
		
		//Podemos usar las variables que se utilizaron para capturar el primer numero
		str = "";
		while ((c=(char)System.in.read())!='\n')
		{
			//El caracter (c) es convertido a String y concatenado
			str = str + String.valueOf(c);
		}
		int n2 = Integer.valueOf(str.trim());
		
		//Ahora solicitamos la operacion deseada
		System.out.println("Indique la Operacion Deseada Seguida de la tecla Enter:");
		System.out.println("1-> Para la Suma");	
		System.out.println("2-> Para la Resta");
		System.out.println("3-> Para la Multiplicacion");
		
		
		//Volvemos a caputar el valor ingresado por el usuario
		
		str = "";
		while ((c=(char)System.in.read())!='\n')
		{
			//El caracter (c) es convertido a String y concatenado
			str = str + String.valueOf(c);
		}
		int n3 = Integer.valueOf(str.trim());
		//en la variable n4 vamos a almacenar el resultado
		int n4 = 0;
		//Ahora programamos la operacion deseada
		
		// iniciamos la instancia de cal
		// Note que cal fue creado a partir de la Interfaz ICalculadora
		// pero la instanciacion se realizara a partir de cualquier clase
		// que implemente esa interfaz, esto nos ayuda para en el futuro 
		// implementar polimorfismos
		cal = new Calculadora(n1,n2);
		
		if (n3 == 1)
		{
			//Eliminamos la logia del negocio
			//n4 = n1 + n2;
			n4 = cal.sumar();
		}
		else if (n3 == 2)
		{
			//Eliminamos la logia del negocio
			//n4 = n1 - n2;
			n4 = cal.restar();
		}
		else if (n3 == 3)
		{
			//Eliminamos la logia del negocio
			//n4 = n1 * n2;
			n4 = cal.multiplicar();
		}
		
		//Ahora mostramos el resultado
		System.out.println("El Resultado Es....:");
		System.out.println(n4);
	}

}
